Windowing display systems having storage locations for storing a colormap (or colourmap or color lookup table) which determines the colors displayed in the system corresponding to particular pixel values are known. These include means for generating a shared colormap by assigning screen colors to pixel values dynamically as the screen colors are required by tasks using the system, and which allow at least some of the windows to have a private colormap which can be copied into the storage locations when the corresponding window is activated. One example of a system of the above type is the X-Windows system (X-Windows is a trademark of the Massachusetts Institute of Technology).
A major problem which occurs in this type of system in a graphics workstation which provides storage locations sufficient to store only one hardware colormap is known as `flashing`. The system allows each window the flexibility of having its own private colormap, but the display hardware allows only one colormap to be installed at any one time. A colormap corresponding to each window must be copied into the hardware colormap each time the window is activated, usually when the display cursor is brought into the bounds of the window. If a private colormap for a window is used the colors of other windows in the system will change when it is activated. This interference between the colors of the windows is very annoying for the user.
To avoid `flashing` (i.e. the colors used in the windows constantly changing as each window becomes active and installs its own colormap), the system provides a shared colormap common to all the windows in the system which can be used by any window by copying the shared colormap into the hardware colormap when the window is activated. The pixel value to displayed-color mapping in this shared colormap is dynamically determined by the system as particular displayed colors are acquired or released by tasks using the system.
This shared colormap arrangement works as long as the windows do not require the colors to be allocated to specific predefined values in the colormap. However, some tasks in such a display system, such as the presentation of images, do require a unique mapping between pixel values and displayed color. If the shared colormap is used for this purpose the image must be remapped before display so that the image pixel values correspond with the values assigned to the required colors in the dynamically generated shared colormap. This remapping can be a relatively time consuming process, often taking of the order of several seconds for a high resolution image. On the other hand, if a private colormap is used just for the image then the color of all the other windows on the display will change when the image window is activated.
The user of such a display system is thus caught in a cleft stick. That is, if they don't want the colors of other windows to change when the image window is activated, then the image display is slow because of the remapping. If they want fast image display, they cannot use the shared colormap and will get `flashing`.